import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
import qs from 'qs';
import Cookies from 'js-cookie';

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_API_BASE_URL || '/api',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
service.interceptors.request.use(
  (config: AxiosRequestConfig) => {
    // 在请求头中添加token
    const token = Cookies.get('token');
    if (token) {
      config.headers = {
        ...config.headers,
        'Authorization': `Bearer ${token}`
      };
    }
    
    // 对POST请求数据进行处理
    if (config.method === 'post' && config.headers && config.headers['Content-Type'] === 'application/x-www-form-urlencoded') {
      config.data = qs.stringify(config.data);
    }
    
    return config;
  },
  (error) => {
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response: AxiosResponse) => {
    const res = response.data;
    
    // 请根据实际接口返回格式修改
    if (res.code !== 0 && res.code !== 200) {
      console.error('响应错误:', res.message || '未知错误');
      return Promise.reject(new Error(res.message || '未知错误'));
    }
    
    return res;
  },
  (error) => {
    console.error('响应错误:', error);
    return Promise.reject(error);
  }
);

export default service; 